package com.tanhua.dubbo.api;

import com.tanhua.model.mongo.FocusUser;
import com.tanhua.model.mongo.Video;
import com.tanhua.model.vo.PageResult;

import java.util.List;

/**
 * @author Xiao
 * @version 1.0
 * @description
 * @date 2021/11/2
 */
public interface VideoApi {
    /**
     * 保存视频
     * @param video
     * @return
     */
    String saveVideo(Video video);

    /**
     * 根据vid查询视频
     * @param vids
     * @return
     */
    List<Video> findByVids(List<Long> vids);

    /**
     * 查询指定数量的视频作为redis断层页补充数据
     * @param userId
     * @param followCount
     * @return
     */
    List<Video> getFollowVideos(Long userId, Integer followCount);

    /**
     * 分页查询视频数据(额外跳过断层页填充过的数据)
     * @param userId
     * @param page
     * @param pagesize
     * @param followCount   断层页填充数据数量
     * @return
     */
    List<Video> getVideos(Long userId, Integer page, Integer pagesize, Integer followCount);

    /**
     * 查看是否已关注
     * @param userId
     * @param followUserId
     * @return
     */
    Boolean hasFocused(Long userId, Long followUserId);

    /**
     * 添加关注数据
     * @param focusUser
     */
    void saveFocusUser(FocusUser focusUser);

    /**
     * 删除关注数据
     * @param userId
     * @param followUserId
     */
    void removeFocusUser(Long userId, Long followUserId);

    /**
     * 后台管理端分页查询视频列表
     * @param page
     * @param pagesize
     * @param uid
     * @return
     */
    PageResult getVideoList(Integer page, Integer pagesize, Long uid);
}
